#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
实际运行示例 - 演示数据提取功能
"""

# 直接导入并使用提取工具的核心功能
import pandas as pd
import json
import os

def run_extraction_example():
    """运行提取示例"""
    
    print("=== 行业指标数据提取工具实际演示 ===\n")
    
    # 加载数据
    data_file = '整理后的行业指标数据.xlsx'
    dict_file = '行业指标字典表.xlsx'
    
    try:
        print("📊 正在加载数据...")
        df_data = pd.read_excel(data_file, sheet_name='整理后数据')
        print(f"✅ 数据加载完成: {len(df_data)} 条记录")
        
        if os.path.exists(dict_file):
            df_dict = pd.read_excel(dict_file)
            print(f"✅ 字典加载完成: {len(df_dict)} 个指标分类")
            indicator_mapping = dict(zip(df_dict['指标名称'], df_dict['指标大类']))
        else:
            print("⚠️  使用内置分类字典")
            indicator_mapping = {
                'EBITDA率(%)': '盈利能力分析',
                '净资产收益率(%)': '盈利能力分析',
                '总资产收益率(%)': '盈利能力分析',
                '销售营业利润率(%)': '盈利能力分析',
                '国有资本回报率(%)': '盈利能力分析',
                '经济增加值率(%)': '盈利能力分析',
                '资本保值增值率(%)': '盈利能力分析',
                '存货周转率(次)': '经营周转能力分析',
                '应收账款周转率(次)': '经营周转能力分析',
                '总资产周转率(次)': '经营周转能力分析',
                '流动资产周转率(次)': '经营周转能力分析',
                '带息负债比率(%)': '偿债能力分析',
                '资产负债率(%)': '偿债能力分析',
                '速动比率': '偿债能力分析',
                '现金流动负债比率(%)': '偿债能力分析',
                '已获利息倍数(倍)': '偿债能力分析',
                '盈余现金保障倍数(倍)': '偿债能力分析',
                '营业现金比率(%)': '偿债能力分析',
                '利润总额增长率(%)': '成长能力分析',
                '营业总收入增长率(%)': '成长能力分析',
                '技术投入比率(%)': '资本性支出分析',
                '研发经费投入强度(%)': '资本性支出分析',
                '百元收入支付的成本费用(元)': '成本控制分析',
                '两金占流动资产比重(%)': '成本控制分析',
                '全员劳动生产率(万元/人)': '人力资源效率分析'
            }
        
        # 显示基本信息
        print(f"\n📈 数据概览:")
        print(f"  • 行业数量: {df_data['行业名称'].nunique()}")
        print(f"  • 指标数量: {df_data['指标名称'].nunique()}")
        print(f"  • 年份范围: {df_data['年份'].min()} - {df_data['年份'].max()}")
        
        # 示例1: 搜索酒类行业
        print(f"\n🔍 示例1: 搜索包含'酒'的行业")
        wine_industries = df_data[df_data['行业名称'].str.contains('酒', case=False, na=False)]['行业名称'].unique()
        print(f"  找到 {len(wine_industries)} 个相关行业:")
        for industry in sorted(wine_industries):
            print(f"    • {industry}")
        
        # 示例2: 提取白酒制造业2023年数据
        if len(wine_industries) > 0 and 2023 in df_data['年份'].values:
            print(f"\n📊 示例2: 提取白酒制造业2023年指标数据")
            
            target_industry = next((industry for industry in wine_industries if '白酒' in industry), wine_industries[0])
            filtered_data = df_data[
                (df_data['行业名称'] == target_industry) &
                (df_data['年份'] == 2023)
            ].copy()
            
            if len(filtered_data) > 0:
                # 添加指标大类
                filtered_data['指标大类'] = filtered_data['指标名称'].map(indicator_mapping)
                filtered_data['指标大类'] = filtered_data['指标大类'].fillna('未分类')
                
                print(f"  找到 {len(filtered_data)} 条记录")
                
                # 重新排列列顺序
                columns_order = ['行业名称', '年份', '指标大类', '指标名称', '优秀值', '良好值', '平均值', '较低值', '较差值']
                result_data = filtered_data[columns_order]
                
                # 显示前几条记录
                print(f"\n  前5条记录:")
                for i, (_, row) in enumerate(result_data.head(5).iterrows()):
                    print(f"    记录 {i+1}:")
                    print(f"      行业名称: {row['行业名称']}")
                    print(f"      年份: {row['年份']}")
                    print(f"      指标大类: {row['指标大类']}")
                    print(f"      指标名称: {row['指标名称']}")
                    print(f"      评级阈值: 优秀={row['优秀值']}, 良好={row['良好值']}, 平均={row['平均值']}, 较低={row['较低值']}, 较差={row['较差值']}")
                    print()
                
                # 生成JSON格式
                data_list = result_data.to_dict('records')
                for record in data_list:
                    for key, value in record.items():
                        if pd.isna(value):
                            record[key] = None
                
                json_result = {
                    "query_info": {
                        "industry_keyword": "白酒",
                        "year": 2023,
                        "total_records": len(data_list),
                        "industries": [target_industry],
                        "years": [2023],
                        "indicators": sorted(result_data['指标名称'].unique().tolist()),
                        "categories": sorted(result_data['指标大类'].unique().tolist())
                    },
                    "data": data_list
                }
                
                print(f"💾 JSON格式输出示例:")
                json_output = json.dumps(json_result, ensure_ascii=False, indent=2)
                print(json_output[:1000] + "..." if len(json_output) > 1000 else json_output)
                
                # 保存到文件
                output_file = f"{target_industry}_2023_指标数据.json"
                with open(output_file, 'w', encoding='utf-8') as f:
                    f.write(json_output)
                print(f"\n✅ 结果已保存到: {output_file}")
            else:
                print(f"  ❌ 未找到{target_industry}2023年的数据")
        
        # 示例3: 按指标大类统计
        print(f"\n📈 示例3: 指标分类统计")
        all_data_with_category = df_data.copy()
        all_data_with_category['指标大类'] = all_data_with_category['指标名称'].map(indicator_mapping)
        all_data_with_category['指标大类'] = all_data_with_category['指标大类'].fillna('未分类')
        
        category_stats = all_data_with_category.groupby('指标大类')['指标名称'].nunique().sort_values(ascending=False)
        print(f"  指标分类及数量:")
        for category, count in category_stats.items():
            print(f"    • {category}: {count} 个指标")
        
        print(f"\n✅ 演示完成! 工具功能正常")
        
    except Exception as e:
        print(f"❌ 演示过程中出错: {e}")
        import traceback
        traceback.print_exc()

if __name__ == "__main__":
    run_extraction_example()
